# -*- coding: utf-8 -*-

# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html

import pymysql
class GkzxprovincePipeline(object):
    def process_item(self, item, spider):
        return item

class GkzxprovinceMysqlPipline(object):
    def __init__(self):
        # 连接MYSQL数据库    这里用的是MYSQL8版本的
        self.connect = pymysql.connect(
            # 连接的是本地数据库
            host='localhost',
            # 数据库用户名
            user='root',
            # 数据库密码
            password='root',
            # 连接的数据库
            db='gkzx',
            # 端口号
            port=3307,
            # 编码格式
            charset = 'utf8'
        )

        # 创建游标，用于操作数据库
        self.cursor = self.connect.cursor()

    def process_item(self, item, spider):
        # 将数据转换成字典的形式
        data = dict(item)
        # 数据的键的格式
        keys = ','.join(data.keys())  # id,year,average,local_province_name,local_type_name,local_batch_name
        # print(keys)
        # 得到数据值的格式
        values = ','.join(['%s']*len(data)) # %s,%s,%s,%s,%s,%s
        # print(values)
        # print(tuple(data.values())) #('gkprocontrolscore1365', 2019, 84, '天津', '艺术文', '专科批')
        # 插入的表名
        tableName = 'gkzxprovince'
        # 向数据库里写数据
        sql = F'INSERT INTO {tableName}({keys}) VALUES ({values})'
        # print(sql)
        self.cursor.execute(sql, tuple(data.values()))
        # 提交操作
        self.connect.commit()

        return item
    # 关闭数据库
    def close_spider(self, spider):
        self.cursor.close()
        self.connect.close()